﻿#define  _CRT_SECURE_NO_WARNINGS bbvb
#include<stdio.h>

//指针
//只要讲指针，就离不开内存，因为指针就是用来访问内存的。
//为什么两个十六进制位等于8个bite位，这是因为一个16进制位为1-15用二进制位显示就得需要四个bite位来表示，所以两个十六进制位等于8个bite位

//编号就是地址，地址就是指针
//指针变量 --- 存放地址的变量
//int main()
//{
//	int a = 10;
//	//&a --- 取地址操作符
//	//&单目操作符，取出a的地址，&a取出的是a所占4个字节中地址较⼩的字节的地址。
//	printf("%p\n", &a);
//	int* p = &a; //p是一个变量（指针变量），取出a的地址存放在p中，p是一块空间
//	//*说明p是指针变量，int在说明p指向的对象是int类型的
//
//	return 0;
//}

//解引用  *
//int main()
//{
//	int a = 10;
//	int* p = &a;
//	*p = 0; //*解引用操作符（间接访问操作符）
//	//通过p指针变量的存储的地址找到p所指向的对象，等价于变量a
//	printf("%d\n", a);
//	return 0;
//}

//指针变量 --存放地址的 --》指针变量的大小就跟地址的大小有关 --》地址由地址线产生的，传输的

//#include <stdio.h>
////指针变量的⼤⼩取决于地址的⼤⼩
////32位平台下地址是32个bit位（即4个字节）
////64位平台下地址是64个bit位（即8个字节）
//int main()
//{
//	printf("%zd\n", sizeof(char*));
//	printf("%zd\n", sizeof(short*));
//	printf("%zd\n", sizeof(int*));
//	printf("%zd\n", sizeof(double*));
//	return 0;
//}

//指针的类型决定了，对指针解引⽤的时候有多⼤的权限（⼀次能操作⼏个字节）。
//#include <stdio.h>
//int main()
//{
//	int n = 0x11223344;
//	int* pi = &n;
//	*pi = 0;
//	return 0;
//}
// 代码2
//#include <stdio.h>
//int main()
//{
//	int n = 0x11223344;
//	char* pc = (char*)&n;
//	*pc = 0;
//	return 0;
//}

#include <stdio.h>
int main()
{
	int n = 10;
	char* pc = (char*)&n;
	int* pi = &n;

	
	printf("pc    =   %p\n", pc);
	printf("&pc+1 =   %p\n", pc + 1);
	printf("pi    =   %p\n", pi);
	printf("&pi+1 =   %p\n", pi + 1);
	return 0;
}

